The LDPC code is a block-based code. The encoder processes blocks of K bits and delivers blocks of N bits. Thus, N-K redundancy bits are added. These N-K bits are called “parity bits”. The coding rate or code rate is defined by the ratio K/N. The lower the coding rate, the higher the number of redundancy bits, and hence, the greater the protection against noise in a transmission channel.
These N-K bits are calculated with the help of a parity matrix H. Therefore, the LDPC code is also a code based on a matrix. This matrix has N-K rows and N columns and comprises “1s” and of “0s”1, with a small number of “1s”; relative to the number of “0s”. This is the reason why codes of this type, based on such a matrix, are called low-density codes (LDPC codes). The encoded block BLC, of N bits, is calculated by solving the equation HBLCT=0, where H denotes the parity matrix and T the “transpose” function.
On the decoder side, the erroneous bits are corrected on the basis of the relationships between the coded cues of the block. These relationships are given by the parity matrix H. The decoder uses internal metrics corresponding to the “1s” of the matrix H. The matrix H corresponds to the Tanner graph of the LDPC code comprising so-called check nodes and bit nodes, interlinked by the path of the graphs that represent the messages exchanged iteratively between the nodes thus linked. These metrics are updated row-wise (updating of the check nodes) by taking account of the internal metrics of one and the same row. Thereafter, the decoder updates these metrics column-wise (updating of the bit nodes) by taking account of the internal metrics in one and the same column and also of the corresponding cue at the input of the decoder that originates from the transmission channel. An iteration corresponds to the updating of the check nodes for all the internal metrics, followed by the updating of the bit nodes for all the internal metrics.
The decoding of a block uses several iterations. The values of the decoded bits, also called “hard decisions”, are obtained by adding together the internal metrics column-wise with the cues received and by taking the sign of the result. Stated otherwise, the sign of the result provides the value “0” or “1” of the bit while the absolute value of the result gives a confidence (probability) indication for this “0” or “1” logic value.
The LDPC-type codes are of interest since they make it possible to obtain very low bit error rates (BER) on account of the iterative nature of the decoding algorithm. Several iterative decoding algorithms exist for decoding LDPC codes, for example, a “belief propagation” (BP) classical algorithm as is well known to the person skilled in the art. That being the case, another algorithm, a “Layered Belief Propagation” algorithm or “Layered BP” is of particular interest because it uses fewer iterations than the classical BP algorithm for the same result.
More precisely, the matrix H is subdivided into layers, each formed of groups of rows. Whereas in the classical BP algorithm, the channel cues, initially equal to the cues of the received block to be decoded, are updated per column of the metrics matrix at the end of each iteration, these channel cues are, in the case of a layered decoding algorithm, updated layer by layer, and the cues updated for a current layer are used for the subsequent layer. Stated otherwise, in such a decoding algorithm of the “layered BP”, type, the updating of the check nodes is performed on a layer, then the bit nodes are updated column-wise, then the check nodes are updated on the subsequent layer before the bit nodes are updated again column-wise, and so on, and so forth.
While the implementation of such an algorithm is relatively simple to achieve when each column of a layer comprises at most a single “1”, the hardware embodiment becomes relatively complex and uses, in particular, multiplexers to perform operations several times on a previous result, when several “1s” are distributed within one and the same column of a layer. Specifically, the step of updating the check nodes will calculate, for the specific column, all the updated metrics that will thereafter be taken into account in updating the corresponding channel cue.